import axios from "axios";
import { ElMessage } from 'element-plus'
import config from '@/config'
const service = axios.create({
  baseURL: config.baseApi,
});
// 添加请求拦截器
service.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
service.interceptors.response.use(
    (res)=>{
        const {status,data,msg} = res;
        if(status == 200){
            return data
        }else{
            ElMessage.error(msg || '网络错误');
            return Promise.reject(msg || '网络错误');
        }
    }
  );
  //一大准，应该可以简化。。。。
function request(options){
  //如有有传入就用传入，没有默认get
    options.method = options.method || 'get';
    // POST请求传data  GET请求传params这里做一个统一处理
    if(options.method.toLowerCase() === 'get'){
      options.params = options.data;
    }
    //如果单个方法传入mock，用传入的，如果没传用config中配置的
    let isMock = config.mock;
    if(typeof options.mock !== 'undefined'){
       isMock = options.mock;
    }
    
    if(config.env === 'prod'){
      // 如果环境是线上，就不用MOCK
      service.defaults.baseURL = config.baseApi;
    }else{
      service.defaults.baseURL = isMock ? config.mockApi : config.baseApi;
    }
    return service(options);

}
export default request;
